home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3dm / dmedia / dmACGetMinInputSize.z / dmACGetMinInputSize
Encoding:
Text File  |  1998-10-20  |  10.1 KB  |  199 lines

  1.  
  2.  
  3.  
  4. ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))                              ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      dmACGetMinInputSize, dmACGetMinOutputSize - auxiliary routines for
  10.      querying input and output buffer sizes for ddddmmmmAAAACCCCCCCCoooonnnnvvvveeeerrrrtttt.
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////ddddmmmm____aaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttt....hhhh>>>>
  14.  
  15.      DDDDMMMMssssttttaaaattttuuuussss ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((
  16.                   DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,,
  17.                   iiiinnnntttt oooouuuuttttppppuuuuttttSSSSiiiizzzzeeee,,,,
  18.                   iiiinnnntttt ****mmmmiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee))))
  19.  
  20.      DDDDMMMMssssttttaaaattttuuuussss ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee((((
  21.                   DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,,
  22.                   iiiinnnntttt iiiinnnnppppuuuuttttSSSSiiiizzzzeeee,,,,
  23.                   iiiinnnntttt ****mmmmiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee))))
  24.  
  25. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  26.      _c_o_n_v_e_r_t_e_r       is a DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr handle created by a previous call
  27.                      to the creation method ddddmmmmAAAACCCCCCCCrrrreeeeaaaatttteeee(3dm).
  28.  
  29.      _o_u_t_p_u_t_S_i_z_e      is a integer set to the requested output buffer size.
  30.                      The units will be bytes if compressing, otherwise frames.
  31.  
  32.      _m_i_n_I_n_p_u_t_S_i_z_e    is a pointer to integer which will be set to the minimum
  33.                      allowable input buffer size for the given _o_u_t_p_u_t_S_i_z_e.
  34.                      The units will be bytes if decompressing, otherwise
  35.                      frames.
  36.  
  37.      _i_n_p_u_t_S_i_z_e       is a integer set to the requested input buffer size.  The
  38.                      units will be bytes if decompressing, otherwise frames.
  39.  
  40.      _m_i_n_O_u_t_p_u_t_S_i_z_e   is a pointer to integer which will be set to the minimum
  41.                      allowable output buffer size for the given _i_n_p_u_t_S_i_z_e.
  42.                      The units will be bytes if compressing, otherwise frames.
  43.  
  44. RRRREEEETTTTUUUURRRRNNNNEEEEDDDD VVVVAAAALLLLUUUUEEEE
  45.      Returns DDDDMMMM____SSSSUUUUCCCCCCCCEEEESSSSSSSS if the operation succeeds.  If DDDDMMMM____FFFFAAAAIIIILLLLUUUURRRREEEE is returned,
  46.      the error number and/or message can be retrieved via ddddmmmmGGGGeeeettttEEEErrrrrrrroooorrrr(3dm).
  47.  
  48. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  49.      The handle passed to these routines is declared as follows:
  50.  
  51.      ttttyyyyppppeeeeddddeeeeffff ssssttttrrrruuuucccctttt ____DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ****DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr;;;;
  52.  
  53.      ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee and ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee are a faster way to query
  54.      the value of the two audio conversion parameters DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMIIIINNNN____IIIINNNNPPPPUUUUTTTT____LLLLEEEENNNN
  55.      and DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMIIIINNNN____OOOOUUUUTTTTPPPPUUUUTTTT____LLLLEEEENNNN.  These values may also be retrieved via
  56.      ddddmmmmAAAACCCCGGGGeeeettttPPPPaaaarrrraaaammmmssss(3dm) after a call to ddddmmmmAAAACCCCSSSSeeeettttPPPPaaaarrrraaaammmmssss(3dm) with the parameter
  57.      DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMAAAAXXXX____RRRREEEEQQQQUUUUEEEESSSSTTTT____LLLLEEEENNNN set to either the input or output size,
  58.      depending on the conversion mode.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))                              ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))
  71.  
  72.  
  73.  
  74. NNNNOOOOTTTTEEEE
  75.      Only one of these two routines will be valid for any given configuration
  76.      of the audio converter handle -- more specifically, dependent on the
  77.      value of DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____MMMMOOOODDDDEEEE.  A fixed input size indicates the
  78.      converter is running in DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____PPPPUUUUSSSSHHHH mode;  a fixed output size
  79.      similarly indicates DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____PPPPUUUULLLLLLLL mode.  A call to the opposite
  80.      routine will return DDDDMMMM____FFFFAAAAIIIILLLLUUUURRRREEEE, and the error value will be set to
  81.      DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____BBBBAAAADDDD____RRRREEEEQQQQUUUUEEEESSSSTTTT.
  82.  
  83.      Typically, buffer sizes only need be set and queried if the audio data is
  84.      being compressed, decompressed, or rate-converted. In all other cases,
  85.      the output buffer length (in frames) will and must equal the input
  86.      length.
  87.  
  88. EEEEXXXXAAAAMMMMPPPPLLLLEEEE
  89.      If an application wishes to compress blocks of data to be written to a
  90.      file or a device, the sequence might look like this (error checking has
  91.      been omitted for brevity):
  92.  
  93.          #include <dmedia/dm_params.h>
  94.          #include <dmedia/dm_audioconvert.h>
  95.  
  96.          DMaudioconverter converter;
  97.          DMparams *inputParams, *outputParams;
  98.  
  99.          /* create the parameter lists and the converter */
  100.          dmParamsCreate(&inputParams);
  101.          dmParamsCreate(&outputParams);
  102.          dmACCreate(&converter);
  103.  
  104.          /* set up input params for 16bit, mono, 44.1K */
  105.          dmSetAudioDefaults(inputParams, 16, 44100, 1);
  106.  
  107.          /* set up output params for GSM compression */
  108.          dmSetAudioDefaults(outputParams, 16, 44100, 1);
  109.          dmParamsSetString(params, DM_AUDIO_COMPRESSION, DM_AUDIO_GSM);
  110.  
  111.          /* configure the converter */
  112.          dmACSetParams(converter, inputParams, outputParams);
  113.  
  114.          /* loop forever, compressing data from some buffer */
  115.          while(1) {
  116.           int inputFrames; /* app sets this */
  117.           int outputBytes; /* and queries for this */
  118.           void *inBuffer = getInputBuffer(&inputFrames);
  119.           void *outBuffer;
  120.  
  121.           /* do the query */
  122.           ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee((((ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,, iiiinnnnppppuuuuttttFFFFrrrraaaammmmeeeessss,,,, &&&&oooouuuuttttppppuuuuttttBBBByyyytttteeeessss))));
  123.  
  124.           /* then perhaps the output buffer will be dynamically alloc'd */
  125.           outBuffer = getLargeEnoughOutBuffer(outputBytes);
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))                              ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm))))
  137.  
  138.  
  139.  
  140.           /* now we can compress our data into that buffer safely */
  141.           dmACConvert(converter, inBuffer, outBuffer,
  142.                    &inputFrames, &outputBytes);
  143.           ...
  144.          }
  145.  
  146. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  147.      dmACCreate(3dm), dmACSetParams(3dm), dmACGetParams(3dm),
  148.      dmACConvert(3dm), dmACReset(3dm), dmACDestroy(3dm),
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.